选择排序流程:
先看动画示意:
流程如下:
- 假设数组长度n,从左开始遍历数组,找出数组中的最小值与其下标
- 第一轮遍历完,就找出了数组的最小值,将其与数组第一位互换位置
- 数组的最小值就移动到了第一位
- 第二轮,从数组第二位开始遍历,重复上述步骤
- 第二轮结束后,数组第二小的数就移动到了数组第二位
- 多次重复后就得到了有序数组
代码示例:
public class Select {
public static void main(String[] args) {
int[] array = {3, 44, 38, 5, 27, 15, 36};
selectSort(array);
printArray(array);
}
public static void selectSort(int[] array) {
for (int i = 0; i < array.length - 1; i++) {
int minIndex = i;
for (int j = i + 1; j < array.length; j++) {
if (array[j] < array[minIndex]) {
minIndex = j;
}
}
int tmp = array[i];
array[i] = array[minIndex];
array[minIndex] = tmp;
}
}
public static void printArray(int[] array) {
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
}
}